main{
  mainClassLoader=Thread.currentThread().getContextClassLoader();
}
readArguments{ }
readPluginDirArgument{
  for (int i=0; i < args.length; i++) {
    if (ARG_PLUGIN_DIR.equals(args[i]) && i + 1 < args.length) {
      System.setProperty(PROP_PLUGIN_DIR,args[i + 1]);
}
readEvaluateArgument{
  for (int i=0; i < args.length; i++) {
    if (ARG_EVALUATE.equals(args[i]) && i + 1 < args.length) {
      System.setProperty(PROP_EVALUATE,args[i + 1]);
}
init{
    currentShell=new Thread(new Runnable(){
        Weld weld=new ModularWeld();
          WeldContainer container=weld.initialize();
          manager=container.getBeanManager();
          WeldContainer container=weld.initialize();
          manager=container.getBeanManager();
          WeldContainer container=weld.initialize();
          manager=container.getBeanManager();
          manager.fireEvent(new PreStartup());
 catch (        Throwable t) {
          manager.fireEvent(new Startup(workingDir,restarting));
 catch (        Throwable t) {
          manager.fireEvent(new PostStartup());
 catch (        Throwable t) {
          manager.fireEvent(new AcceptUserInput());
 catch (        Throwable t) {
}
run{
  Weld weld=new ModularWeld();
    WeldContainer container=weld.initialize();
    manager=container.getBeanManager();
    WeldContainer container=weld.initialize();
    manager=container.getBeanManager();
    WeldContainer container=weld.initialize();
    manager=container.getBeanManager();
    manager.fireEvent(new PreStartup());
 catch (  Throwable t) {
    manager.fireEvent(new Startup(workingDir,restarting));
 catch (  Throwable t) {
    manager.fireEvent(new PostStartup());
 catch (  Throwable t) {
    manager.fireEvent(new AcceptUserInput());
}
observeReinitialize{
  workingDir=shell.getCurrentDirectory().getUnderlyingResourceObject();
  manager.fireEvent(new Shutdown());
}
initLogging{
  String[] loggerNames=new String[]{"","main",Logger.GLOBAL_LOGGER_NAME};
  for (  String loggerName : loggerNames) {
    Handler[] handlers=globalLogger.getHandlers();
      handler.setLevel(Level.SEVERE);
      globalLogger.removeHandler(handler);
}
loadPlugins{
  try {
    ModuleLoader moduleLoader=Module.getBootModuleLoader();
    CompositeClassLoader composite=new CompositeClassLoader();
    composite.add(Module.forClassLoader(Bootstrap.class.getClassLoader(),true).getClassLoader());
    List<PluginEntry> toLoad=new ArrayList<PluginEntry>();
    List<PluginEntry> installed=InstalledPluginRegistry.listByAPICompatibleVersion(InstalledPluginRegistry.getRuntimeAPIVersion());
    List<PluginEntry> incompatible=InstalledPluginRegistry.list();
    for (    PluginEntry pluginEntry : incompatible) {
      try {
        Module module=moduleLoader.loadModule(ModuleIdentifier.fromString(plugin.toModuleId()));
        composite.add(module.getClassLoader());
}
